function dist = calculateDistance1(chromo1, chromo2)
    % 计算两条染色体（可能为异质性染色体）之间的距离
    % 示例：基于元素共现的类海明距离
     if isempty(chromo1) || isempty(chromo2)
         dist = inf;
         return;
     end
     
     M = size(chromo1, 2);
     if size(chromo2, 2) ~= M
         dist = inf; % 不相容
         return;
     end
 
     % 获取每个组件所属模块的编号（即整数编码），便于后续处理
     [map1, ~] = find(chromo1); % map1(j) = chromo1 中元素 j 的模块索引
     [map2, ~] = find(chromo2); % map2(j) = chromo2 中元素 j 的模块索引
     
     if length(map1) ~= M || length(map2) ~= M
         % 如果某一列全为零，则会发生这种情况 - 表示染色体无效
         dist = inf; 
         return;
     end

     distance = 0;
     num_pairs = 0;
     for i = 1:M
         for j = i + 1:M
             num_pairs = num_pairs + 1;
             % 检查元素 i 和 j 是否在同一个模块中
             same_module1 = (map1(i) == map1(j));
             same_module2 = (map2(i) == map2(j));
             if same_module1 ~= same_module2
                 distance = distance + 1;
             end
         end
     end
     
     % 是否标准化距离？可选。目前返回原始计数。
     if num_pairs > 0
        dist = distance / num_pairs;
     else 
         dist = 0;
     end
     % dist = distance;
end
